import tensorflow as tf

# 构建机器学习模型，这里使用了 Sequential 类
# 给这个模型按照顺序添加了4层，
# 实例化一个 Sequential 类，赋值给了Model，这样他就变成了一个模型。
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),  # 形状转换层
    tf.keras.layers.Dense(128, activation='relu'),  # 全连接层,设置128个神经元，激活函数为relu
    tf.keras.layers.Dropout(0.2),  # 随机失活层
    tf.keras.layers.Dense(10)  # 全连接层
])

'''
👉 层 = 数据处理的步骤; 每一层 = 对输入数据做一次特定的变换
👉 模型 = 层的集合，通过顺序添加层来构建机器学习模型。

第一层：tf.keras.layers.Flatten(input_shape=(28, 28)),
这个层的作用是将输入的 28x28 的图片数据展平为一维数据，方便后面的全连接层处理。

第二层：tf.keras.layers.Dense(128, activation='relu'),
这个层的作用是添加一个全连接层，128个神经元，激活函数为 relu。

第三层：tf.keras.layers.Dropout(0.2),
这个层的作用是随机失活层，即在训练时随机将某些神经元的输出置为 0，以此来减少过拟合。

第四层：tf.keras.layers.Dense(10),
这个层的作用是添加一个全连接层，10个神经元，输出层。

'''

# 从 x_train 中取第 0 张图片作为测试数据，放在模型中，查看他的预测结果。
# 模型会返回一个由未归一化的概率值组成的二维张量（向量），未归一化指的是这些概率的总和不是1
predictions = model.predict(x_train[:1])
new_predictions = tf.nn.softmax(predictions) # 归一化

print(new_predictions)  # 输出预测结果




